﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AgentSystem.AgentBaseFunctionality.DynamicProxy
{
    /// <summary>
    /// Class Defines an exception that occurs while dynamically creating a Service Proxy.
    /// </summary>
    [Serializable]
    public class DynamicProxyException : Exception
    {
        /// <summary>
        /// The generic exception message
        /// </summary>
        private const string genericExceptionMessage = @"An exception occurred while dynamically creating a Service Proxy.";

        /// <summary>
        /// Initializes a new instance of the <see cref="DynamicProxyException"/> class.
        /// </summary>
        public DynamicProxyException() : base(genericExceptionMessage) { }

        /// <summary>
        /// Initializes a new instance of the <see cref="DynamicProxyException"/> class.
        /// </summary>
        /// <param name="message">The message that describes the error.</param>
        public DynamicProxyException(string message) : base(message) { }

        /// <summary>
        /// Initializes a new instance of the <see cref="DynamicProxyException"/> class.
        /// </summary>
        /// <param name="message">The error message that explains the reason for the exception.</param>
        /// <param name="innerException">The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.</param>
        public DynamicProxyException(string message, Exception innerException) : base(message, innerException) { }

        /// <summary>
        /// Initializes a new instance of the <see cref="DynamicProxyException"/> class.
        /// </summary>
        /// <param name="innerException">The inner exception.</param>
        public DynamicProxyException(Exception innerException) : base(genericExceptionMessage, innerException) { }
    }
}
